package es.ucm.fdi.isbc.viviendas.representacion.adaptacion;

import java.util.ArrayList;
import java.util.Collection;

import es.ucm.fdi.isbc.viviendas.representacion.DescripcionVivienda;
import es.ucm.fdi.isbc.viviendas.representacion.SolucionVivienda;

import jcolibri.cbrcore.CBRCase;

public class AdaptacionSolucionRefinada extends AdaptacionSolucion {
	
	private Collection<Double> _similitudes;

	public AdaptacionSolucionRefinada(Collection<CBRCase> casos, boolean superficieConocida,
			Collection<Double> similitudes) {
		super(casos, superficieConocida);
		_similitudes=similitudes;
	}
	
	public SolucionVivienda getSolution(){
		SolucionVivienda solucion = new SolucionVivienda();
		ArrayList<Integer> listaPrecios = new ArrayList<Integer>();
		ArrayList<Double> listaSimilitudes = new ArrayList<Double>();
		int precio=0;
		
		if(_esConocida){
			for(CBRCase caso : _casos){
				listaPrecios.add(((DescripcionVivienda)caso.getDescription()).getPrecioMedio());
			}
		}else{
			for(CBRCase caso : _casos){
				listaPrecios.add(((DescripcionVivienda)caso.getDescription()).getPrecio());
			}
		}
				
		for(Double similitud : _similitudes){
			listaSimilitudes.add(similitud);
		}
		
		//Tenemos la lista de similitudes y la lista de casos
		//Ponderamos los precios con las similitudes.
		for(int i=0; i<Math.min(_casos.size(), _similitudes.size()); i++){
			precio+=(listaSimilitudes.get(i)*listaPrecios.get(i));
		}
		
		
		return solucion;
	}

}
